package com.moxiao.yfjh.module.maker.service.memberStringing;

import com.moxiao.yfjh.framework.common.pojo.PageResult;
import com.moxiao.yfjh.module.maker.controller.admin.memberStringing.vo.MatchmakerMemberStringingCreateReqVO;
import com.moxiao.yfjh.module.maker.controller.admin.memberStringing.vo.MatchmakerMemberStringingExportReqVO;
import com.moxiao.yfjh.module.maker.controller.admin.memberStringing.vo.MatchmakerMemberStringingPageReqVO;
import com.moxiao.yfjh.module.maker.controller.admin.memberStringing.vo.MatchmakerMemberStringingUpdateReqVO;
import com.moxiao.yfjh.module.maker.dal.dataobject.memberStringing.MatchmakerMemberStringingDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 * 相亲红娘会员用户牵线总次数 Service 接口
 *
 * @author mx
 */
public interface MatchmakerMemberStringingService {

    /**
     * 创建相亲红娘会员用户牵线总次数
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createMatchmakerMemberStringing(@Valid MatchmakerMemberStringingCreateReqVO createReqVO);

    /**
     * 更新相亲红娘会员用户牵线总次数
     *
     * @param updateReqVO 更新信息
     */
    void updateMatchmakerMemberStringing(@Valid MatchmakerMemberStringingUpdateReqVO updateReqVO);

    /**
     * 删除相亲红娘会员用户牵线总次数
     *
     * @param id 编号
     */
    void deleteMatchmakerMemberStringing(Long id);

    /**
     * 获得相亲红娘会员用户牵线总次数
     *
     * @param id 编号
     * @return 相亲红娘会员用户牵线总次数
     */
    MatchmakerMemberStringingDO getMatchmakerMemberStringing(Long id);

    /**
     * 获得相亲红娘会员用户牵线总次数列表
     *
     * @param ids 编号
     * @return 相亲红娘会员用户牵线总次数列表
     */
    List<MatchmakerMemberStringingDO> getMatchmakerMemberStringingList(Collection<Long> ids);

    /**
     * 获得相亲红娘会员用户牵线总次数分页
     *
     * @param pageReqVO 分页查询
     * @return 相亲红娘会员用户牵线总次数分页
     */
    PageResult<MatchmakerMemberStringingDO> getMatchmakerMemberStringingPage(
            MatchmakerMemberStringingPageReqVO pageReqVO);

    /**
     * 获得相亲红娘会员用户牵线总次数列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 相亲红娘会员用户牵线总次数列表
     */
    List<MatchmakerMemberStringingDO> getMatchmakerMemberStringingList(MatchmakerMemberStringingExportReqVO exportReqVO);


    /**
     * 获得当日最后一个no
     *
     * @param todayStart
     * @param todayEnd
     * @return
     */
    MatchmakerMemberStringingDO getLastNo(Date todayStart, Date todayEnd);

    /**
     * no编号重复验证
     *
     * @param code
     * @return
     */
    Integer repeatChecking(String code);

    /**
     * 获取会员用户的当前前线总次数
     *
     * @param userId
     * @return
     */

    MatchmakerMemberStringingDO getSelectOne(Long userId);

    /**
     * 修改红娘次数
     *
     * @param id
     * @param num
     */
    void updateNum(Long id, Integer num);
}
